/*
 * @Author: Dagon
 * @Date: 2021-03-26 11:13:07
 * @Description: 算法数组转换成obj 明源云第10题
 */

/**
 * 算法题
 *     var data = [
      { 'parent_id': null, 'id': a, 'value': 'xxx'},
      { 'parent_id': a, 'id': c, 'value': 'xxx'},
      { 'parent_id': d, 'id': f, 'value': 'xxx'},
      { 'parent_id': c, 'id': e, 'value': 'xxx'},
      { 'parent_id': b, 'id': d, 'value': 'xxx'},
      { 'parent_id': a, 'id': b, 'value': 'xxx'},
    ];
    // 转化后
    var tree = {
      'a': {
        'children': {
          'b': {
            'children': {
              'd': {
                'children': {
                  'f': {}
                }
              }
            }
          },
          c: {
            'children': {
              'e': {}
            }
          }
        }
      }
    }
 * @param {*} arr 
 */
function tree(arr){
  let obj={};
  let objArr = [];
  let arr1=[],arr2=[];        
  for(let i of arr){
          arr1.push(i.parent_id);
          arr2.push(i.id);
  }
  let fat = arr1.filter(item=>!arr2.some(item2=>item == item2));
  console.log(111, fat)
  // obj[fat[0]]={
  //         children:{}
  // }
  make(fat[0], obj);
  
  function make(id,obj){
    let newArr = arr.filter(it => it.parent_id == id);
    for(let i of newArr){
      let j = arr.filter(aa=> aa.parent_id == i.id);
      if(j.length){
      obj[i.id]={
        children:{}
      }
      make(i.id,obj[i.id].children)
      }else{
              obj[i.id]={}
      }
              
    }
  }
  console.log(JSON.stringify(obj, null, 2))
  }

  const arr = [
    { 'parent_id': null, 'id': 'a', 'value': 'xxx'},
    { 'parent_id': 'a', 'id': 'c', 'value': 'xxx'},
    { 'parent_id': 'd', 'id': 'f', 'value': 'xxx'},
    { 'parent_id': 'c', 'id': 'e', 'value': 'xxx'},
    { 'parent_id': 'b', 'id': 'd', 'value': 'xxx'},
    { 'parent_id': 'a', 'id': 'b', 'value': 'xxx'},
  ];

  tree(arr)